package j.util.jdbc.simple.core.operations;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;

/**
 * jdbc删除操作的方法集
 * @author 刘军海
 * @version Sep 14, 2011 10:11:40 AM
 */
public interface SimpleJdbcDeleteOperations {

	/**
	 * 根据PK删除表tblName中的记录，如果数据库中存在，则应该返回1，即受影响的行数
	 * @return
	 */
	<T> int delete(Connection connection, Class<T> clazz, Map<String, Object> args) throws SQLException;
	/**
	 * 删除一个实体，条件根据args中的项进行构造，key可同时指定三个信息：1.实体属性名称；2.比较运算符；3.关系运算符
	 * @param args key为实体的属性名$操作符$与下一个字段的连接符,value为参数值，且这个map若不是有序的，则生成的操作符有可能不是预期的
	 * @return
	 */
	<T> int deleteByCW(Connection connection, Class<T> clazz, Map<String, Object> args) throws SQLException;
	
	/**
	 * 批量删除，返回值为一个数组，即每条删除语句所受影响的行数
	 * 每个实体的删除是按照PK进行
	 * @return
	 */
	<T> int[] deleteBatch(Connection connection, Class<T> clazz, List<Map<String, Object>> list) throws SQLException;
}
